//
//  GDMMainTabBar.swift
//  GDMweibo
//
//  Created by mac on 15/11/25.
//  Copyright © 2015年 mac. All rights reserved.
//

import UIKit

class GDMMainTabBar: UITabBar {

 
//    自己添加上面的那个大的按钮之后，就会要重新调用这个方法，设置按钮的自动布局
//    在试图变化的时候系统会根据需求自动来执行，调用几次
    override func layoutSubviews() {
        
//        要是不调用父类的这一句，tabBar上的背景还有上面的那一条线都是没有的
        super.layoutSubviews()

//        打印tabBar上面的子控件，要是调用了super就可以显示imageView，要是不调用就没有这个，后面就是透明的
//        print(self.subviews)
        
//        设置每一个item的大小
//        首先设置item的个数,因为要添加一个中间那个大的按钮，所以先是设置这个按钮为5个
        let btnCount = 5
        
//        设置每一个按钮的frame
        let w = self.bounds.size.width / CGFloat(btnCount)
        
        let h = self.bounds.size.height
        
//        设置每一个按钮的固定大小
        let frame = CGRectMake(0, 0, w, h)
        
        var index = 0
        
//        在这里面加载并且遍历,因为每一个控件都是继承子这个UIView的，所以在这里让他作为UIView是正确的
        for v in subviews as! [UIView] {
            
//            把拿到的这个控件进行判断，现在判断的是取出来的这个v是不是一个控件
            if v is UIControl && !(v is UIButton){
                
//                现在在上面打印了一下懒加载的那个按钮，之后在这里遍历，那么按钮就会出现在最下面，为了避免让他的出现，所以现在要过滤掉
//                print(v)
//                后面的那两个参数的意思就是设置的这个控件的偏移量，第一个是这个控件的frame，后面那个是X的偏移量，最后面的那个是Y的偏移量
                v.frame = CGRectOffset(frame,CGFloat(index) * w , 0)
                
//                设置索引+1
//                index++
                index += (index == 1) ? 2 : 1
                
            }
            
//        设置在某一个位置的时候添加那个大的点击按钮
//            if index == 2 {
//                
//                index++
//                
//            }
        }
        
        self.composedButton.frame = CGRectOffset(frame, 2 * w, 0)
//        self.composedButton.frame = frame
//        
////                所以就是可以在这里设置那个按钮的大小了
////                在这里不能直接使用center因为这个center是根据他的父视图的
//        self.composedButton.center = CGPointMake(self.center.x, h * 0.5)
        
//        遍历控件中的子控件
        func demo () {
            
            //        拿到子视图
            print(self.subviews as NSArray)
            
            //       在这里打印一下，是为了观察下面在遍历控件的时候，是否我自己创建的那个普通的按钮是否也会被调用
            print(self.composedButton)
            
            //        在这里面加载并且遍历,因为每一个控件都是继承子这个UIView的，所以在这里让他作为UIView是正确的
            for v in subviews as! [UIView] {
                
                //            把拿到的这个控件进行判断，现在判断的是取出来的这个v是不是一个控件
                if v is UIControl && !(v is UIButton){
                    
                    //                现在在上面打印了一下懒加载的那个按钮，之后在这里遍历，那么按钮就会出现在最下面，为了避免让他的出现，所以现在要过滤掉
                    print(v)
                    
                }
                
            }
        }
        
    }
    
//        使用懒加载的方式加载按钮
    lazy var composedButton : UIButton = {
        
//        在OC当中这样初始化出来的一个按钮就是自己cusstom类型的按钮
//        [[UIButton alloc] init]
        
//        在swift中
//        let btn = UIButton().buttonType(UIButtonType.Custom) as! UIButton
        
//        初始化一个控件,返回一个自定义的按钮
        let btn = UIButton()
        
//        设置按钮的图片还有背景图片
        btn.setImage(UIImage(named: "tabbar_compose_icon_add"), forState: UIControlState.Normal)
        btn.setImage(UIImage(named: "tabbar_compose_icon_add_highlighted"), forState: UIControlState.Selected)
        
        btn.setBackgroundImage(UIImage(named: "tabbar_compose_button"), forState: UIControlState.Normal)
        
        btn.setBackgroundImage(UIImage(named: "tabbar_compose_button_highlighted"), forState: UIControlState.Selected)
        
        
        self.addSubview(btn)
        
        return btn
       
//        使用懒加载的时候一定要记得写上下面的那个小括号，才可以代表这是一个懒加载
    }()

}
